The present invention relates generally to information processing and, more particularly, to system and methods for facilitating deployment and execution of computer application programs, particularly those deployed on heterogenous or multi-platform environments.
The first personal computers were largely stand-alone units with no direct connection to other computers or computer networks. Data exchanges between computers were mainly accomplished by exchanging magnetic or optical media such as floppy disks. Over time, more and more computers were connected to each other using Local Area Networks or “LANs.” With the ever-increasing popularity of the Internet, particularly the World Wide Web (“Web”) portion of the Internet, however, more and more personal computers are connected to larger networks. Providing access to vast stores of information, the Internet is typically accessed by users through Web “browsers” (e.g., Microsoft Internet Explorer or Netscape Navigator) or other “Internet applications.” The explosive growth of the Internet has fostered a distributed computing environment, with a dramatic effect on the data processing operations of many businesses and other organizations. Today, for example, employees access their corporate data through the Internet using a variety of different hardware configurations.
Today, multi-platform distributed computing environments are pervasive. Such environments are characterized by multiple computers connected to a network, such as “client” computers connected to one or more “host” computers via a network. A common configuration is a client machine or workstation running browser software that executes applet code (e.g., Java applet) that is downloaded from a server residing on the Internet, such as illustrated in FIG. 1A. Since the protocols used for communication (e.g., TCP/IP) support a variety of platforms, an almost infinite variety of hardware-platform configurations is possible.
A common problem exists in such environments, however. Often, a software development shop or engineering group is required to manage a code base that must exist within the framework of many different customer-specified requirements. Consider, for instance, client-side application software that presents information from a database server (e.g., residing on the Internet) using a browser (e.g., Java-enabled browser) running at a client or desktop computer. For a software development shop that services large telecommunications providers, a substantial amount of customization is often required for ensuring that the deployed application executes properly at the browser and according to customer specification. For example, the customer often requires a customized user interface, with customer-specified colors and presentation order. Additionally, customers often want to add new features, so that the application may adapt as technology changes. Typically, such customization is done using cut and paste techniques (i.e., copying or moving program code from one location to another, or possibly removing it altogether). Regardless of how such changes are effected, once significant changes have been made, the entire program must be rebuilt. As a result, the task of accommodating customer-specific changes to the code is a costly undertaking.
Further, the developer is faced with the problem that his or her code base never stabilizes. Instead, one is faced with an ever-changing code base—always in a constant state of flux. This is disruptive to the overall development process as there is no stable code base in which to track errors or “bugs,” or to apply necessary fixes. As more and more changes are requested, the increasingly unstable code base becomes impractical to manage and impossible to effect bug fixes. At the same time, however, the functionality to be implemented at the client is a finite set of functionality, or at least a known set that can be increased. The underlying functionality needed for getting the information from the database server to the client is independent of the functionality required to actually present that information (i.e., display it on screen) at the client computer. In other words, how one presents the information at the client is independent of how one gets the information from the database.
As illustrated in FIG. 1B, this may lead to further difficulties, however. If the presentation software is “versioned” separately from that of the back-end software, then a many-to-many relationship results between the code, thus greatly increasing the complexity of managing the respective code bases. For example, a software vendor may need to support a variety of different browsers, each of which itself may run on a variety of different operating system platforms. Keeping all of these different versions working correctly is a monumental task for vendors.
What is needed are system and tools that allow one to manage a code base that represents the entirety of the required solutions. Such a solution should accommodate customization with relative ease. The present invention fulfills this and other needs.